Bloque 5.1 · 30 min

Introducción a DQL

DQL (Data Query Language) es la parte de SQL especializada en consultar información.

Mientras DDL crea estructuras y DML modifica datos, DQL extrae información útil desde las tablas.

Objetivo de DQL

  • Consultar datos.
  • Filtrar resultados.
  • Analizar información.
  • Generar reportes.
  • Ayudar en la toma de decisiones.

Consulta básica

SELECT nombre, edad
FROM alumnos
WHERE edad > 18;

Qué ocurre aquí

  • SELECT: columnas que queremos ver.
  • FROM: tabla origen.
  • WHERE: condición de filtrado.
DQL convierte datos almacenados en información útil para empresas.
Toda aplicación moderna usa consultas DQL continuamente.
¿Cuál es el objetivo principal de DQL?
Bloque 5.2 · 35 min

SELECT, FROM y WHERE. Explicación teórica

SELECT

Indica qué columnas se devolverán en el resultado.

SELECT nombre, ciudad

FROM

Define la tabla origen.

FROM clientes

WHERE

Filtra filas concretas según condiciones.

WHERE ciudad = 'Madrid'

Orden lógico interno

Orden real Cláusula
1 FROM
2 WHERE
3 SELECT

Aunque escribimos SELECT primero, SQL evalúa primero FROM.

Muchos errores ocurren por no entender el orden interno de ejecución.
¿Qué cláusula se evalúa primero internamente?
Bloque 5.3 · 40 min

SELECT, FROM y WHERE. Ejemplos código

Ejemplo 1

SELECT nombre
FROM empleados;

Muestra únicamente la columna nombre.

Ejemplo 2

SELECT nombre, salario
FROM empleados
WHERE salario > 2000;

Devuelve empleados con salario superior a 2000.

Ejemplo 3

SELECT nombre, ciudad
FROM clientes
WHERE ciudad = 'Sevilla';

Filtra clientes de Sevilla.

Ejemplo profesional

SELECT nombre, edad
FROM alumnos
WHERE edad > 18
AND ciudad = 'Madrid';

Explicación

  • AND combina condiciones.
  • Solo aparecen registros que cumplen ambas.
En empresas, estas consultas alimentan dashboards y APIs.
¿Qué hace WHERE?
Bloque 5.4 · 35 min

Operadores

Operadores de comparación

Operador Significado
= Igual
> Mayor
< Menor
<> Distinto

BETWEEN

WHERE salario BETWEEN 2000 AND 4000

Filtra valores dentro de un rango.

IN

WHERE ciudad IN ('Madrid','Barcelona')

LIKE

WHERE nombre LIKE 'A%'

Busca patrones de texto.

Operadores lógicos

  • AND
  • OR
  • NOT
LIKE '%eco%' encuentra textos que contienen "eco".
¿Qué operador sirve para buscar patrones?
Bloque 5.5 · 25 min

Conclusión del trío base de DQL

Cláusula Función
SELECT Elegir columnas
FROM Elegir tabla
WHERE Aplicar filtros

Consulta completa

SELECT nombre, salario
FROM empleados
WHERE salario > 2500;

Con estas tres cláusulas ya pueden construirse muchísimas consultas reales.

El trío SELECT-FROM-WHERE es la base del análisis SQL.
¿Qué cláusula indica las columnas?
Bloque 5.6 · 35 min

Funciones agregadas

Las funciones agregadas resumen conjuntos de datos.

Principales objetivos

  • Calcular promedios.
  • Contar registros.
  • Encontrar máximos.
  • Obtener mínimos.
  • Sumar cantidades.

Ejemplo

SELECT AVG(salario)
FROM empleados;

Calcula el salario medio.

GROUP BY

SELECT departamento, AVG(salario)
FROM empleados
GROUP BY departamento;

Agrupa empleados por departamento.

Sin GROUP BY el resultado sería un único promedio global.
¿Qué hace GROUP BY?
Bloque 5.7 · 40 min

Las principales funciones agregadas

Función Uso
COUNT() Cuenta registros
SUM() Suma valores
AVG() Calcula promedio
MIN() Valor mínimo
MAX() Valor máximo

COUNT

SELECT COUNT(*)
FROM clientes;

SUM

SELECT SUM(total_venta)
FROM ventas;

HAVING

SELECT ciudad, SUM(total_venta)
FROM ventas
GROUP BY ciudad
HAVING SUM(total_venta) > 5000;

HAVING filtra grupos ya agrupados.

WHERE filtra filas antes del GROUP BY. HAVING filtra grupos después.
¿Qué función calcula el promedio?
Bloque 5.8 · 40 min

Subconsultas básicas

Una subconsulta es una consulta dentro de otra consulta.

Ejemplo clásico

SELECT nombre
FROM empleados
WHERE salario > (
  SELECT AVG(salario)
  FROM empleados
);

Qué ocurre

  • La subconsulta calcula el salario medio.
  • La consulta principal compara salarios.

Ventaja

Permiten resolver problemas complejos con una sola instrucción SQL.

La subconsulta se ejecuta primero.
¿Qué es una subconsulta?
Bloque 5.9 · 35 min

Clasificación de las subconsultas

Subconsulta escalar

Devuelve un único valor.

WHERE salario > (
  SELECT AVG(salario)
  FROM empleados
)

Subconsulta de conjunto

Devuelve varias filas o columnas.

WHERE id_cliente IN (
  SELECT id_cliente
  FROM pedidos
)

Ubicaciones posibles

  • WHERE
  • FROM
  • SELECT

Subconsulta en FROM

SELECT ciudad, AVG(total)
FROM (
  SELECT ciudad, total_venta AS total
  FROM ventas
) AS ventas_totales
GROUP BY ciudad;
Las subconsultas en FROM necesitan alias obligatoriamente.
¿Qué devuelve una subconsulta escalar?
Bloque 5.10 · 30 min

Beneficios de las subconsultas

  • Permiten análisis avanzados.
  • Reducen código repetido.
  • Facilitan consultas complejas.
  • Evitan crear tablas temporales.
  • Ayudan en Business Intelligence.

Aplicaciones reales

  • Encontrar empleados mejor pagados.
  • Detectar productos más vendidos.
  • Analizar ventas por región.
  • Comparar resultados respecto a medias.
Empresas como BBVA o Accenture usan subconsultas continuamente.
Una subconsulta mal optimizada puede afectar mucho al rendimiento.
¿Qué ventaja tienen las subconsultas?
Bloque 5.11 · 45 min

Ejemplos de código explicados

Empleado mejor pagado

SELECT nombre, departamento
FROM empleados
WHERE salario = (
  SELECT MAX(salario)
  FROM empleados
);

Explicación

  • MAX obtiene el salario máximo.
  • La consulta principal busca coincidencias.

Clientes con pedidos

SELECT nombre
FROM clientes
WHERE id_cliente IN (
  SELECT id_cliente
  FROM pedidos
);

Ciudades con ventas altas

SELECT ciudad, SUM(total_venta)
FROM ventas
GROUP BY ciudad
HAVING SUM(total_venta) > 10000;

Errores típicos

  • Olvidar GROUP BY.
  • Usar HAVING incorrectamente.
  • No usar alias.
  • Confundir WHERE con HAVING.
Prueba siempre las subconsultas por separado antes de integrarlas.
¿Qué función obtiene el valor máximo?